package com.mc.stack;

/**
 * @Description: 顺序栈
 * @Author: MoChen
 */
public class HSqStack {

    final int MAXSIZE = 10; // 定义栈中元素的最大个数

    int[] data; // 静态数组中放栈中元素

    int top; // 栈顶指针

    HSqStack(){
        data = new int[MAXSIZE];
    }

    // 初始化栈
    void InitStack(){
        top = -1; // 此处如果指向0，则预示已经有一个参数了，所以初始化指向-1
    }

    // 判断栈空
    boolean StackEmpty(){
        return top == -1;
    }

    // 入栈
    boolean Push(int x){
        if(top == MAXSIZE - 1){ // 栈满
            return false;
        }
        top++; // 指针上移一位
        data[top] = x; // 新元素入栈
        return true;
    }

    // 出栈
    boolean Pop(int x){
        if(top ==  - 1){ // 空栈
            return false;
        }
        x = data[top]; // 栈顶元素先出栈
        top--; // 指针下移
        return true;
    }

    // 读取栈顶元素
    int GetTop(int x){
        if(top ==  - 1){ // 空栈
            return -1;
        }
        x = data[top]; // 读取栈顶元素
        return x;
    }

}
